Forgot password test

jamesperet 9 years ago
parent
commit
2158b793f9

+ 1 - 0
config/environments/test.rb

@@ -36,5 +36,6 @@ RailsWebsiteTemplate::Application.configure do
36 36
   
37 37
   # Crapy Fix for email testing error
38 38
   config.action_mailer.raise_delivery_errors = true
39
+  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
39 40
   
40 41
 end

+ 2 - 2
config/routes.rb

@@ -44,8 +44,8 @@ RailsWebsiteTemplate::Application.routes.draw do
44 44
     scope '/account' do
45 45
         # password reset
46 46
         get   '/reset-password'        => 'devise/passwords#new',    as: 'new_user_password'
47
-        put   '/reset-password'        => 'devise/passwords#update', as: 'user_password'
48
-        post  '/reset-password'        => 'devise/passwords#create'
47
+        put   '/reset-password'        => 'devise/passwords#update', :as => :user_password
48
+        post  '/reset-password'        => 'devise/passwords#create', :as => :reset_password
49 49
         get   '/reset-password/change' => 'devise/passwords#edit',   as: 'edit_user_password'
50 50
         # confirmation
51 51
         get   '/confirm'        => 'devise/confirmations#show',   as: 'user_confirmation'

+ 1 - 1
features/step_definitions/email_steps.rb

@@ -178,7 +178,7 @@ end
178 178
 # Interact with Email Contents
179 179
 #
180 180
 
181
-When /^(?:I|they|"([^"]*?)") follows? "([^"]*?)" in the email$/ do |address, link|
181
+When /^(?:I|they|"([^"]*?)") clicks in the link? "([^"]*?)" in the email$/ do |address, link|
182 182
   visit_in_email(link, address)
183 183
 end
184 184
 

+ 14 - 0
features/step_definitions/login_steps.rb

@@ -48,6 +48,8 @@ Given(/^the user "(.*?)" "(.*?)" with email "(.*?)" and password "(.*?)" exists$
48 48
   end
49 49
 end
50 50
 
51
+# Fixes for devise post bug
52
+
51 53
 Then(/^I log in with the email "(.*?)" and password "(.*?)"$/) do |arg1, arg2|
52 54
   fill_in "user_email", :with => arg1
53 55
   fill_in "user_password", :with => arg2
@@ -60,6 +62,18 @@ When(/^I submit the login form$/) do
60 62
   page.driver.submit :post, user_registration_path(:user => {first_name: "Monty", last_name: "Cantsin", email: "monty_cantsin@canada.com", password: "12345678", password_confirmation: "12345678"}), {}
61 63
 end
62 64
 
65
+When(/^I submit the password reset form$/) do
66
+  click_button "Reset Password"
67
+  page.driver.submit :post, reset_password_path(:user => {email: "monty_cantsin@canada.com"}), {}
68
+end
69
+
70
+Then(/^I submit the new password form$/) do
71
+  #click_button "Save Password"
72
+  token = URI.parse(current_url).to_s.split('=').last
73
+  #puts token
74
+  page.driver.submit :put, user_password_path(:user => {password: "87654321", password_confirmation: "87654321", reset_password_token: token}), {}
75
+end
76
+
63 77
 # METHODS
64 78
 
65 79
 def user_login

+ 23 - 2
features/user_account.feature

@@ -1,4 +1,4 @@
1
-@focus
1
+@user_account
2 2
 Feature: User Account
3 3
 	In order to change content in the website 
4 4
 	As user of the system
@@ -37,4 +37,25 @@ Feature: User Account
37 37
 		Then I should see "Welcome! You have signed up successfully"
38 38
 		And I should see "Monty Cantsin"
39 39
 		And I should see "Logout"
40
-		And "monty_cantsin@canada.com" should receive an email with subject "Welcome to Rails Website Template"
40
+		And "monty_cantsin@canada.com" should receive an email with subject "Welcome to Rails Website Template"
41
+	
42
+	@focus	
43
+	Scenario: User forgets password
44
+		Given the user "Monty" "Cantsin" with email "monty_cantsin@canada.com" and password "12345678" exists
45
+		And I am not logged in
46
+		And I go to the login page
47
+		When I click in the link "Forgot your password?"
48
+		And I fill in "Email" with "monty_cantsin@canada.com"
49
+		And I submit the password reset form
50
+		Then I should see "You will receive an email with instructions on how to reset your password in a few minutes"
51
+		And "monty_cantsin@canada.com" should receive an email with subject "Reset password instructions"
52
+		When I open the email with subject "Reset password instructions"
53
+		Then I should see "Someone has requested a link to change your password" in the email body
54
+		Then I clicks in the link "Change my password" in the email
55
+		And I fill in "New Password" with "87654321"
56
+		And I fill in "Confirm New Password" with "87654321"
57
+		And I submit the new password form
58
+		Then I should see "Your password was changed successfully. You are now signed in."
59
+		And I should see "Monty Cantsin"
60
+		And I should see "Logout"
61
+